using OneCaps.Core.Entity;
using OneCaps.Core.Enum;

namespace OneCaps.Core.Interfaces
{
    /// <summary>
    /// 车辆仓库接口
    /// </summary>
    public interface IVehicleRepository : IRepository<Vehicle, int>
    {
        /// <summary>
        /// 根据车牌号获取车辆
        /// </summary>
        Task<Vehicle?> GetByLicensePlateAsync(string licensePlate);

        /// <summary>
        /// 检查车牌号是否存在
        /// </summary>
        Task<bool> ExistsByLicensePlateAsync(string licensePlate);

        /// <summary>
        /// 获取正在停车的车辆
        /// </summary>
        Task<IEnumerable<Vehicle>> GetParkingVehiclesAsync();

        /// <summary>
        /// 根据车辆类型获取车辆
        /// </summary>
        Task<IEnumerable<Vehicle>> GetByVehicleTypeAsync(VehicleType vehicleType);

        /// <summary>
        /// 获取VIP车辆
        /// </summary>
        Task<IEnumerable<Vehicle>> GetVipVehiclesAsync();

        /// <summary>
        /// 搜索车辆
        /// </summary>
        Task<IEnumerable<Vehicle>> SearchVehiclesAsync(string keyword);
    }
} 